home *** CD-ROM | disk | FTP | other *** search
- package javax.help;
-
- import com.sun.java.help.impl.LangElement;
- import com.sun.java.help.impl.Parser;
- import com.sun.java.help.impl.ParserEvent;
- import com.sun.java.help.impl.ParserListener;
- import com.sun.java.help.impl.Tag;
- import com.sun.java.help.impl.TagProperties;
- import java.io.IOException;
- import java.io.Reader;
- import java.util.Hashtable;
- import java.util.Locale;
- import java.util.Stack;
-
- class HelpSet$HelpSetParser implements ParserListener {
- private Stack tagStack;
- private Locale defaultLocale;
- private Locale lastLocale;
- private HelpSet myHS;
- private Locale myHSLocale;
- private HelpSetFactory factory;
- private String viewName;
- private String viewLabel;
- private String viewType;
- private String viewEngine;
- private String viewImage;
- private String viewData;
- private Hashtable htData;
-
- HelpSet$HelpSetParser(HelpSetFactory var1) {
- this.factory = var1;
- }
-
- synchronized void parseInto(Reader var1, HelpSet var2) throws IOException {
- this.tagStack = new Stack();
- this.defaultLocale = var2.getLocale();
- this.lastLocale = this.defaultLocale;
- this.myHS = var2;
- this.myHSLocale = var2.getLocale();
- Parser var3 = new Parser(var1);
- var3.addParserListener(this);
- var3.parse();
- }
-
- public void tagFound(ParserEvent var1) {
- HelpSet.access$000("tagFound");
- Locale var2 = null;
- Tag var4 = var1.getTag();
- String var5 = var4.name;
- TagProperties var6 = var4.atts;
- Hashtable var7 = var6 == null ? null : var6.getHashtable();
- if (var6 != null) {
- String var8 = var6.getProperty("xml:lang");
- var2 = HelpUtilities.localeFromLang(var8);
- }
-
- if (var2 == null) {
- var2 = this.lastLocale;
- }
-
- if (var5.equals("helpset")) {
- if (var4.isEnd) {
- this.removeTag(var4);
- } else {
- if (!var2.equals(this.defaultLocale) && !var2.equals(this.myHSLocale) && var2 != null) {
- HelpSet.access$200(this.myHS, var2);
- this.defaultLocale = var2;
- }
-
- if (var6 != null) {
- String var10 = var6.getProperty("version");
- if (var10 != null && var10.compareTo("1.0") != 0) {
- this.parsingError("helpset.unknownVersion", var10);
- }
- }
-
- this.addTag(var4, var2);
- }
-
- } else {
- if (this.tagStack.empty()) {
- this.parsingError("helpset.wrongTopLevel", var5);
- }
-
- LangElement var3 = (LangElement)this.tagStack.peek();
- String var9 = var3.getTag().name;
- if (var5.equals("title")) {
- if (var4.isEnd) {
- this.removeTag(var4);
- } else {
- if (!var9.equals("helpset")) {
- this.wrongParent(var5, var9);
- }
-
- if (!var2.equals(this.defaultLocale) && !var2.equals(this.myHSLocale)) {
- this.wrongLocale(var2, this.defaultLocale, this.myHSLocale);
- }
-
- this.addTag(var4, var2);
- }
- } else if (var5.equals("homeID")) {
- if (var4.isEnd) {
- this.removeTag(var4);
- } else {
- if (!var9.equals("maps")) {
- this.wrongParent(var5, var9);
- }
-
- this.addTag(var4, var2);
- }
- } else if (var5.equals("mapref")) {
- if (var4.isEnd && !var4.isEmpty) {
- this.removeTag(var4);
- } else {
- if (!var9.equals("maps")) {
- this.wrongParent(var5, var9);
- }
-
- if (!var4.isEmpty) {
- this.addTag(var4, var2);
- }
-
- this.factory.processMapRef(this.myHS, var7);
- }
- } else if (var5.equals("data")) {
- if (var4.isEnd) {
- this.removeTag(var4);
- } else {
- if (!var9.equals("view")) {
- this.wrongParent(var5, var9);
- } else {
- this.addTag(var4, var2);
- }
-
- this.htData = var7;
- }
- } else if (!var5.equals("name") && !var5.equals("type") && !var5.equals("image")) {
- if (var5.equals("label")) {
- if (var4.isEnd) {
- this.removeTag(var4);
- } else if (!var9.equals("view")) {
- this.wrongParent(var5, var9);
- } else {
- if (!var2.equals(this.defaultLocale) && !var2.equals(this.myHSLocale)) {
- this.wrongLocale(var2, this.defaultLocale, this.myHSLocale);
- }
-
- this.addTag(var4, var2);
- }
- } else if (var5.equals("view")) {
- if (var4.isEnd) {
- this.removeTag(var4);
- if (this.viewImage != null) {
- if (this.htData == null) {
- this.htData = new Hashtable();
- }
-
- this.htData.put("imageID", this.viewImage);
- }
-
- this.factory.processView(this.myHS, this.viewName, this.viewLabel, this.viewType, var7, this.viewData, this.htData, var2);
- this.viewName = null;
- this.viewLabel = null;
- this.viewType = null;
- this.viewImage = null;
- this.viewData = null;
- this.htData = null;
- } else if (!var9.equals("helpset")) {
- this.wrongParent(var5, var9);
- } else {
- this.addTag(var4, var2);
- }
- } else if (var5.equals("maps")) {
- if (var4.isEnd) {
- this.removeTag(var4);
- } else if (!var9.equals("helpset")) {
- this.wrongParent(var5, var9);
- } else {
- this.addTag(var4, var2);
- }
- } else if (var5.equals("subhelpset")) {
- if (var4.isEnd && !var4.isEmpty) {
- this.removeTag(var4);
- } else {
- if (!var4.isEmpty) {
- this.addTag(var4, var2);
- }
-
- this.factory.processSubHelpSet(this.myHS, var7);
- }
- }
- } else if (var4.isEnd) {
- this.removeTag(var4);
- } else if (!var9.equals("view")) {
- this.wrongParent(var5, var9);
- } else {
- this.addTag(var4, var2);
- }
-
- }
- }
-
- public void piFound(ParserEvent var1) {
- this.factory.processPI(this.myHS, var1.getTarget(), var1.getData());
- }
-
- public void doctypeFound(ParserEvent var1) {
- this.factory.processDOCTYPE(var1.getRoot(), var1.getPublicId(), var1.getSystemId());
- }
-
- private void checkNull(String var1, String var2) {
- if (!var2.equals("")) {
- this.parsingError("helpset.wrongText", var1, var2);
- }
-
- }
-
- public void textFound(ParserEvent var1) {
- HelpSet.access$000("textFound: ");
- HelpSet.access$000(" text: " + var1.getText());
- if (!this.tagStack.empty()) {
- LangElement var2 = (LangElement)this.tagStack.peek();
- Tag var3 = var2.getTag();
- TagProperties var4 = var3.atts;
- if (var4 == null) {
- Object var10000 = null;
- } else {
- var4.getHashtable();
- }
-
- String var6 = var1.getText().trim();
- String var7 = var3.name;
- if (var7.equals("helpset")) {
- this.checkNull("helpset", var6);
- } else {
- int var8 = this.tagStack.size();
- String var9 = "";
- if (var8 >= 2) {
- var2 = (LangElement)this.tagStack.elementAt(var8 - 2);
- var9 = var2.getTag().name;
- }
-
- if (var7.equals("title")) {
- this.factory.processTitle(this.myHS, var6);
- } else if (var7.equals("homeID")) {
- this.factory.processHomeID(this.myHS, var6);
- } else if (var7.equals("mapref")) {
- this.checkNull("mapref", var6);
- } else if (var7.equals("subhelpset")) {
- this.checkNull("subhelpset", var6);
- } else if (var7.equals("data")) {
- this.viewData = var6.trim();
- } else if (var7.equals("label")) {
- this.viewLabel = var6.trim();
- } else if (var7.equals("name")) {
- this.viewName = var6.trim();
- } else if (var7.equals("type")) {
- this.viewType = var6.trim();
- } else if (var7.equals("image")) {
- this.viewImage = var6.trim();
- } else if (var7.equals("view")) {
- this.checkNull("view", var6);
- } else if (var7.equals("maps")) {
- this.checkNull("maps", var6);
- }
-
- }
- }
- }
-
- public void errorFound(ParserEvent var1) {
- }
-
- public void commentFound(ParserEvent var1) {
- }
-
- protected void addTag(Tag var1, Locale var2) {
- LangElement var3 = new LangElement(var1, var2);
- this.tagStack.push(var3);
- if (this.lastLocale == null) {
- this.lastLocale = var2;
- } else if (var2 == null) {
- this.lastLocale = var2;
- } else {
- if (!this.lastLocale.equals(var2)) {
- this.lastLocale = var2;
- }
-
- }
- }
-
- protected void removeTag(Tag var1) {
- String var3 = var1.name;
- Object var4 = null;
-
- LangElement var2;
- do {
- if (this.tagStack.empty()) {
- this.unbalanced(var3);
- }
-
- var2 = (LangElement)this.tagStack.pop();
- } while(!var2.getTag().name.equals(var3));
-
- Locale var6;
- if (this.tagStack.empty()) {
- var6 = this.defaultLocale;
- } else {
- var2 = (LangElement)this.tagStack.peek();
- var6 = var2.getLocale();
- }
-
- if (this.lastLocale == null) {
- this.lastLocale = var6;
- } else if (var6 == null) {
- this.lastLocale = var6;
- } else {
- if (!this.lastLocale.equals(var6)) {
- this.lastLocale = var6;
- }
-
- }
- }
-
- private void parsingError(String var1) {
- String var2 = HelpUtilities.getText(var1);
- this.factory.reportMessage(var2, false);
- }
-
- private void parsingError(String var1, String var2) {
- String var3 = HelpUtilities.getText(var1, var2);
- this.factory.reportMessage(var3, false);
- }
-
- private void parsingError(String var1, String var2, String var3) {
- String var4 = HelpUtilities.getText(var1, var2, var3);
- this.factory.reportMessage(var4, false);
- }
-
- private void wrongParent(String var1, String var2) {
- this.parsingError("helpset.wrongParent", var1, var2);
- }
-
- private void unbalanced(String var1) {
- this.parsingError("helpset.unbalanced", var1);
- }
-
- private void wrongLocale(Locale var1, Locale var2, Locale var3) {
- String var4 = HelpUtilities.getText("helpset.wrongLocale", var1.toString(), var2.toString(), var3.toString());
- this.factory.reportMessage(var4, true);
- }
- }
-